package com.dingding.service.user.core.dao;

import java.util.List;

import com.dingding.common.core.base.dao.IBaseDao;
import com.dingding.common.core.base.dto.DubboInvokResponseDTO;
import com.dingding.common.core.beans.UserLogin;

/**
 * 
 * @ClassName: IUserLoginDao 
 * @Description: 用户登录表数据操作
 * @author CHEHAUNBO 
 * @date 2016年2月19日 下午8:21:013
 * 
 */
public interface IUserLoginDao extends IBaseDao<UserLogin> {

	/**
	 * 
	 * @Title: byWeChatIdIsExistUser 
	 * @Description: 通过微信ID判断当前用户是否已经和手机号绑定
	 * @param  weChatId 用户微信ID
	 * @return boolean true 存在 false 失败
	 * @author CHEHAUNBO
	 * 
	 */
	public boolean isExistUserByWeChatId(String weChatId);

	/**
	 * 
	 * @Title: isExistUserByUserName 
	 * @Description: 通过手机号判断用户是否存在
	 * @param userName 用户名
	 * @return int 1: 存在用户，但是未参加活动 2: 存在用户，但是已经参加活动 3:用户不存在
	 * @author CHEHAUNBO
	 * 
	 */
	public int isExistUserByUserName(String userName);

	/**
	 * 
	 * @Title: isExistUserByUserTelPhone 
	 * @param telPhone 通过手机号判断用户是否存在
	 * @return boolean true 成功 false 失败
	 * @author CHEHAUNBO
	 * 
	 */
	public boolean isExistUserByUserTelPhone(String telPhone);

	/**
	 * 
	 * @Title: getUserLoginByProperty 
	 * @Description: 根据某一属性查询用户登录表相关信息
	 * @param property 属性
	 * @param value 属性值
	 * @return  UserLogin 查询到的用户登录信息
	 * @author CHEHAUNBO
	 * 
	 */
	public UserLogin getUserLoginByProperty(String property, String value);

	/**
	 * 
	 * @Title: addUserLogin 
	 * @Description: 添加用户
	 * @param tellPhone 手机号
	 * @param userLoginId 用户登录主键ID
	 * @return boolean true 成功 false 失败
	 * @author CHEHAUNBO
	 * 
	 */
	public boolean addUserLogin(String tellPhone, String userLoginId, String weChatId);
	
	/**
	 * @Description:添加用户登录
	 * @author fengshuonan
	 * @since 2.4
	 */
	public UserLogin addUserlogin(String tellPhone, String userLoginId, String weChatId);

	/**
	 * 
	 * @Title: bindingWeChatId 
	 * @Description: 将微信ID和手机号绑定
	 * @param weCharId 微信ID
	 * @param tellPhone 手机号
	 * @return boolean  true 成功 false 失败
	 * @author CHEHAUNBO
	 * 
	 */
	public boolean bindingWeChatId(String tellPhone, String weCharId);

	/**
	 * 
	 * @Title: updateisAttendActivity 
	 * @Description: 赠送给用户优惠券后将参加活动的用户状态改为已参加
	 * @param userId 用户ID
	 * @return boolean true 成功 false 失败
	 * @author CHEHAUNBO
	 * 
	 */
	public boolean updateisAttendActivity(String userId);

	/**
	 * 
	 * 获取当前城市的所用用户的手机号
	 * 
	 * @Title: getAllUserTelPhoneByCity 
	 * @param String city 城市
	 * @return  List<String> 查询到的用户手机号集合
	 * @author CHEHAUNBO
	 * 
	 */
	public DubboInvokResponseDTO<List<String>> getAllUserTelPhoneByCity(String city);

	/**
	 * 
	 * @Title: addCancelNumber 
	 * @Description: 给主动取消的用户增加一次取消订单次数
	 * @param userId 主动取消订单次数
	 * @author YHQ 
	 * @return boolean    返回类型
	 * 
	 */
	public boolean addCancelNumber(String userId);
	
	/**
	 * 
	 * @Title: addPushNumber 
	 * @Description: 减少一次用户优惠券数量
	 * @param userId 被推送用户Id
	 * @author YHQ 
	 * @return boolean    返回类型
	 * 
	 */
	public boolean reduceCouponNumber(String userId);
	
	
	/**
	 * 
	 * @Title: addPushNumber 
	 * @Description: 给用户增加一次推送次数
	 * @param userId 被推送用户Id
	 * @author YHQ 
	 * @return boolean    返回类型
	 * 
	 */
	public boolean addPushNumber(String userId);

	/**
	 * 
	 * @Title: addCancelNumber 
	 * @Description:  确认到达，给双方增加完成订单次数
	 * @param driverId 司机Id
	 * @param passengerId 乘客Id
	 * @author YHQ 
	 * @return boolean    返回类型
	 * 
	 */
	public boolean addConfirmArrival(String driverId, String passengerId, String ucId);
	

}
